package com.mp3s.db_sqlite_pool.utils;

import javax.sql.DataSource;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

public class SQLiteConnectionPool {

    private static HikariDataSource dataSource;

    // 初始化连接池
    static {
        try {
            HikariConfig config = new HikariConfig();
            config.setJdbcUrl("jdbc:sqlite:quote.db?busy_timeout=5000&journal_mode=WAL"); // SQLite 数据库文件路径
            config.setDriverClassName("org.sqlite.JDBC"); // SQLite 驱动
            config.setMaximumPoolSize(20); // 最大连接数
            config.setMinimumIdle(10); // 最小空闲连接数
            config.setIdleTimeout(30000); // 空闲连接超时时间（毫秒）
            config.setMaxLifetime(1800000); // 连接最大生命周期（毫秒）
            config.setConnectionTimeout(30000); // 连接超时时间（毫秒）

            dataSource = new HikariDataSource(config);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 获取数据源
    public static DataSource getDataSource() {
        return dataSource;
    }

    // 关闭连接池
    public static void shutdown() {
        if (dataSource != null) {
            dataSource.close();
        }
    }
}